/**
 * 改进的数组功能
 */
// Array.of()方法
let items = Array.of(1, 2, 3);
console.log(items.length);
console.log(items[0]);
console.log(items[1]);
console.log(items[2]);
// ES5将类数组转换为数组
function makeArr(arrayLike) {
  var result = [];
  for (var i = 0; i < arrayLike.length; i++) {
    result.push(arrayLike[i]);
  }
  return result;
}
// 映射转换----一个参数
function translate() {
  return Array.from(arguments, (value) => {
    return value + 1
  })
}
let numbers = translate(1, 2, 3) //[2,3,4]
  //映射转换----两个参数
let helper = {
  diff: 1,
  add(value) {
    return value + this.diff
  }
}

function translate() {
  return Array.from(arguments, helper.add, helper);
}
let numbers = translate(1, 2, 3, 4)
console.log(numbers) //[2, 3, 4, 5]
  // 映射转换----三个参数
let numbers = {
  *[Symbol.iterator]() {
    yield 1;
    yield 2;
    yield 3;
  }
}
let numbers2 = Array.from(numbers, (value) => value + 1)
console.log(numbers2) // [2, 3, 4]
  /**
   * find()和findIndex()
   */
let numbers = [25, 30, 35, 40, 45];
// console.log(numbers.find(n => {return n > 33 }))
// console.log(numbers.findIndex(n => {return n > 33 }))

console.log(numbers.find(n => n > 33))
console.log(numbers.findIndex(n => n > 33))
  /**
   * fill()
   */
let arr = new Array(8);
// arr.fill(8);//全部填充为8
arr.fill(1, 5); //从索引5开始全部填充为1
arr.fill(100, 2, 6); //从索引2到6，不包含6，全部填充为100
console.log(arr)
  /**
   * copyWithin()：将数组元素赋值为一个指定的值
   * 第一个参数是该方法开始填充值的索引位置
   * 第二个参数是开始复制值的索引位置
   * 第三个参数限制被重写元素的数量
   */
let numbers = [1, 2, 3, 4, 5, 6];
numbers.copyWithin(2, 0); //121234
numbers.copyWithin(0, 1)
console.log(numbers.toString())